using System.Collections;

namespace Oracle.ManagedDataAccess.Types
{
	internal class ZoneIdMap
	{
		internal static Hashtable zoneid;

		internal const int INV_ZONEID = -1;

		static ZoneIdMap()
		{
			zoneid = new Hashtable(544);
			zoneid.Add("Afghanistan Standard Time", 240);
			zoneid.Add("Alaskan Standard Time", 106);
			zoneid.Add("Arab Standard Time", 288);
			zoneid.Add("Arabian Standard Time", 298);
			zoneid.Add("Arabic Standard Time", 265);
			zoneid.Add("Argentina Standard Time", 175);
			zoneid.Add("Armenian Standard Time", 241);
			zoneid.Add("Atlantic Standard Time", 120);
			zoneid.Add("AUS Central Standard Time", 345);
			zoneid.Add("AUS Eastern Standard Time", 352);
			zoneid.Add("Azerbaijan Standard Time", 242);
			zoneid.Add("Azores Standard Time", 336);
			zoneid.Add("Bangladesh Standard Time", 756);
			zoneid.Add("Canada Central Standard Time", 127);
			zoneid.Add("Cape Verde Standard Time", 339);
			zoneid.Add("Caucasus Standard Time", 241);
			zoneid.Add("Cen. Australia Standard Time", 349);
			zoneid.Add("Central America Standard Time", 159);
			zoneid.Add("Central Asia Standard Time", 269);
			zoneid.Add("Central Brazilian Standard Time", 189);
			zoneid.Add("Central Europe Standard Time", 386);
			zoneid.Add("Central European Standard Time", 398);
			zoneid.Add("Central Pacific Standard Time", 481);
			zoneid.Add("Central Standard Time (Mexico) ", 141);
			zoneid.Add("Central Standard Time", 101);
			zoneid.Add("China Standard Time", 250);
			zoneid.Add("Dateline Standard Time", 27);
			zoneid.Add("E. Africa Standard Time", 53);
			zoneid.Add("E. Australia Standard Time", 347);
			zoneid.Add("E. Europe Standard Time", 375);
			zoneid.Add("E. South America Standard Time", 188);
			zoneid.Add("Eastern Standard Time", 100);
			zoneid.Add("Egypt Standard Time", 44);
			zoneid.Add("Ekaterinburg Standard Time", 303);
			zoneid.Add("Fiji Standard Time", 454);
			zoneid.Add("FLE Standard Time", 408);
			zoneid.Add("Georgian Standard Time", 258);
			zoneid.Add("GMT Standard Time", 369);
			zoneid.Add("Greenland Standard Time", 207);
			zoneid.Add("Greenwich Standard Time", 334);
			zoneid.Add("GTB Standard Time", 407);
			zoneid.Add("Hawaiian Standard Time", 450);
			zoneid.Add("India Standard Time", 260);
			zoneid.Add("Iran Standard Time", 264);
			zoneid.Add("Israel Standard Time", 266);
			zoneid.Add("Jordan Standard Time", 268);
			zoneid.Add("Kamchatka Standard Time", 311);
			zoneid.Add("Korea Standard Time", 273);
			zoneid.Add("Magadan Standard Time", 310);
			zoneid.Add("Mauritius Standard Time", 443);
			zoneid.Add("Mexico Standard Time 2 ", 142);
			zoneid.Add("Mexico Standard Time", 141);
			zoneid.Add("Mid-Atlantic Standard Time", 17);
			zoneid.Add("Middle East Standard Time", 277);
			zoneid.Add("Montevideo Standard Time", 204);
			zoneid.Add("Morocco Standard Time", 61);
			zoneid.Add("Mountain Standard Time (Mexico) ", 142);
			zoneid.Add("Mountain Standard Time", 102);
			zoneid.Add("Myanmar Standard Time", 247);
			zoneid.Add("N. Central Asia Standard Time", 305);
			zoneid.Add("Namibia Standard Time", 64);
			zoneid.Add("Nepal Standard Time", 282);
			zoneid.Add("New Zealand Standard Time", 471);
			zoneid.Add("Newfoundland Standard Time", 118);
			zoneid.Add("North Asia East Standard Time", 307);
			zoneid.Add("North Asia Standard Time", 306);
			zoneid.Add("Pacific SA Standard Time", 194);
			zoneid.Add("Pacific Standard Time (Mexico) ", 96);
			zoneid.Add("Pacific Standard Time", 103);
			zoneid.Add("Pakistan Standard Time", 284);
			zoneid.Add("Paraguay Standard Time", 200);
			zoneid.Add("Romance Standard Time", 382);
			zoneid.Add("Russian Standard Time", 402);
			zoneid.Add("SA Eastern Standard Time", 198);
			zoneid.Add("SA Pacific Standard Time", 195);
			zoneid.Add("SA Western Standard Time", 182);
			zoneid.Add("Samoa Standard Time", 479);
			zoneid.Add("SE Asia Standard Time", 296);
			zoneid.Add("Singapore Standard Time", 292);
			zoneid.Add("South Africa Standard Time", 72);
			zoneid.Add("Sri Lanka Standard Time", 293);
			zoneid.Add("Syria Standard Time", 294);
			zoneid.Add("Taipei Standard Time", 255);
			zoneid.Add("Tasmania Standard Time", 350);
			zoneid.Add("Tokyo Standard Time", 267);
			zoneid.Add("Tonga Standard Time", 483);
			zoneid.Add("Ulaanbaatar Standard Time", 281);
			zoneid.Add("US Eastern Standard Time", 111);
			zoneid.Add("US Mountain Standard Time", 109);
			zoneid.Add("UTC", 1);
			zoneid.Add("UTC+12", 4);
			zoneid.Add("UTC-02", 17);
			zoneid.Add("UTC-11", 26);
			zoneid.Add("Venezuela Standard Time", 205);
			zoneid.Add("Vladivostok Standard Time", 309);
			zoneid.Add("W. Australia Standard Time", 346);
			zoneid.Add("W. Central Africa Standard Time", 66);
			zoneid.Add("W. Europe Standard Time", 383);
			zoneid.Add("West Asia Standard Time", 300);
			zoneid.Add("West Pacific Standard Time", 476);
			zoneid.Add("Yakutsk Standard Time", 308);
		}

		internal static int GetRegionID(string regionName)
		{
			return (int)zoneid[regionName.Trim()];
		}

		internal static string GetRegionName(int regionId)
		{
			IDictionaryEnumerator enumerator = zoneid.GetEnumerator();
			while (enumerator.MoveNext())
			{
				if ((int)enumerator.Value == regionId)
				{
					return (string)enumerator.Key;
				}
			}
			return null;
		}

		internal static bool isValidID(int value)
		{
			return zoneid.ContainsValue(value);
		}

		internal static bool isValidRegion(string key)
		{
			return zoneid.ContainsKey(key);
		}
	}
}
